classdef AsymmetricPartialLeastSquaresClassifier ...
        < BinaryClassClassifier ...
        & Modelable
    %ASYMMETRICPARTIALLEASTSQUARESCLASSIFIER Summary of this class goes here
    %   Detailed explanation goes here
    
    properties ( SetAccess = protected )
        nDimension = 3;
    end
    
    methods
        function [  ] = setNDimension( this, nDimension )
            this.nDimension = nDimension;
        end
    end
    
    methods
        function [ this ] = AsymmetricPartialLeastSquaresClassifier( ...
                name, nDimension )
            if nargin == 0
                this.setName('aplsc')
            end
            if nargin >= 1
                this.setName(name)
            end
            if nargin >= 2
                this.setNDimension = nDimension;
            end
        end
    end
    
    methods
        function [  ] = build( this, X, Y )
            this.model = train_aplsc(X, Y);
        end
        
        function [ result ] = apply( this, X, Y )
            [result.Y_hat, result.Y_out] = test_aplsc(this.model, X, this.nDimension);
        end
    end
    
end

